1. Field of the Invention
The present invention relates generally to virtual machines. More specifically, it relates to enhancing a Java™ virtual machine for allowing inspection and modification of the state of the virtual machine through configuring the virtual machine to perform as a Web browser.
2. Discussion of Related Art
Over the last several years, the Java™ language and platform have become more widespread and their use is continually on the rise. An increasing number of applications are written in the Java™ language and are using a Java™ virtual machine. Java™ applications are being used increasingly in components, such as Web appliances, set-top boxes, and other types of computing devices. As the use of the Java™ virtual machine, needed to execute Java™ applications, increases, the demand for improving the development lifecycle of a Java™ application and improving the efficiency of a Java™ application becomes imperative. Getting a better understanding of the performance of the Java™ virtual machine is a step in this direction. However, as acknowledged in the field, Java™ virtual machines are seen as black boxes; opaque components that perform a crucial function but whose internal states are generally inaccessible to the users.
Presently, some tools are available that allow those working in particular areas, for example, Java™ application debugging, to get information on the state of a Java™ virtual machine pertaining specifically to the task of debugging an application. By using a debugging protocol, it is possible to ask the virtual machine questions about its state without interfering with its other operations. Another example is using profiling protocols to get specific information related to profile information. These tools or protocols typically require their own client and do not talk to a Java™ virtual machine using a Web browser.
One significant drawback of using these tools is that they are rigid and only provide a narrow band of information about the state of the virtual machine to the user. Furthermore, the information provided to the user, while specific to a particular purpose, is still rather high-level and gives the user a “bird's eye” view of the Java™ virtual machine state. Naturally, most users would prefer having more detailed, low-level information about the state and performance of the virtual machine if possible. In addition, users, whether VM developers, application developers, or enterprise users, would like to be able to make queries to the VM of a general nature, and not be limited to a specific task.
Therefore, it would be desirable to have a mechanism that allows interactively browsing the dynamic state of a Java™ virtual machine while it is executing an application or even while it is idle. Furthermore, it would be desirable to broaden the information returned to the user beyond a particular purpose or space. That is, allow the user to ask the virtual machine questions of a general nature yet get, as output, detailed, low-level state information in a convenient form. It would also be desirable to allow users to reliably query the state of the virtual machine using a widely available existing tool, without having to create a separate client host and with negligible interference to the virtual machine.